package com.example.test.netty.decode;

import com.example.test.netty.constant.NettyConstants;
import com.example.test.netty.message.MessageEntity;
import com.example.test.netty.utils.FormatTransferUtils;
import com.example.test.netty.utils.HexUtils;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @program: test
 * @description: 消息解码器
 * @author: qiu bo yang
 * @create: 2020-10-13 11:34
 **/
@Slf4j
@Component
public class MessageDecoder extends ByteToMessageDecoder {
    private StringBuffer stringBuffer = null;
    private int dataSize = 0;
    private int currentSize = 0;

    /**
     * 消息解码方法
     *
     * @param channelHandlerContext
     * @param byteBuf
     * @param list
     * @throws Exception
     */
    @Override
    protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List<Object> list) throws Exception {
        //获取传输字节数组
        byte[] bytes = new byte[byteBuf.readableBytes()];
        byteBuf.readBytes(bytes);
        //获取16进制报文
        String hexStr = HexUtils.byteToHexStr(bytes);
        if (NettyConstants.magic.equals(HexUtils.hexStrToStr(hexStr.substring(0, 8)))) {
            //接收字段长度
            if (byteBuf.writerIndex() == FormatTransferUtils.lBytesToInt(HexUtils.hexStrToBytes(hexStr.substring(32, 40))) + 20) {
                doSendMessageEntity(hexStr, list);
            } else {
                stringBuffer = new StringBuffer();
                stringBuffer.append(hexStr);
                dataSize = FormatTransferUtils.lBytesToInt(HexUtils.hexStrToBytes(hexStr.substring(32, 40))) + 20;
                currentSize = currentSize + byteBuf.writerIndex();
            }
        } else {
            stringBuffer.append(hexStr);
            currentSize = currentSize + byteBuf.writerIndex();
            if (dataSize == currentSize) {
                String jointHexStr = stringBuffer.toString();
                doSendMessageEntity(jointHexStr, list);
                dataSize = 0;
                currentSize = 0;
                stringBuffer = null;
            }
        }
    }

    /**
     * 将解码消息封装成消息对象
     *
     * @param hexStr 16进制字符串
     * @param list
     */
    private void doSendMessageEntity(String hexStr, List<Object> list) {
        //log.info("获取16进制报文：{}", hexStr);
        MessageEntity entity = new MessageEntity();
        //消息标志 0-7  16进制报文→字符串
        entity.setMagic(HexUtils.hexStrToStr(hexStr.substring(0, 8)));
        //版本号 8-9  16进制报文→10进制数字→低字节数组→数字
        entity.setVersion(FormatTransferUtils.lBytesToInt(FormatTransferUtils.toLH(HexUtils.hexStrToInt(hexStr.substring(8, 10)))));
        //消息类型 10-11  16进制报文→10进制数字→低字节数组→数字
        entity.setMsgType(FormatTransferUtils.lBytesToInt(FormatTransferUtils.toLH(HexUtils.hexStrToInt(hexStr.substring(10, 12)))));
        //数据类型 12-13  16进制报文→10进制数字→低字节数组→数字
        entity.setDataType(FormatTransferUtils.lBytesToInt(FormatTransferUtils.toLH(HexUtils.hexStrToInt(hexStr.substring(12, 14)))));
        //保留字段 14-15  16进制报文→10进制数字→低字节数组→数字
        entity.setResv(FormatTransferUtils.lBytesToInt(FormatTransferUtils.toLH(HexUtils.hexStrToInt(hexStr.substring(14, 16)))));
        //时间戳 16-23  16进制报文→低字节数组→数字
        entity.setTimestamp(FormatTransferUtils.lBytesToInt(HexUtils.hexStrToBytes(hexStr.substring(16, 24))));
        //消息序号 24-31  16进制报文→低字节数组→数字
        entity.setSquence(FormatTransferUtils.lBytesToInt(HexUtils.hexStrToBytes(hexStr.substring(24, 32))));
        //数据长度 32-39  16进制报文→低字节数组→数字
        entity.setDataSize(FormatTransferUtils.lBytesToInt(HexUtils.hexStrToBytes(hexStr.substring(32, 40))));
        //可变字节 40- ?  16进制报文→字符串
        entity.setMsgBody(HexUtils.hexStrToStr(hexStr.substring(40)));
        //log.info("entity：{},hexStr：{}", entity, hexStr);
        list.add(entity);
    }

    /*public static void main(String[] args) {
        String hexStr = "51595A4E030301002E96865F3C0600000E8400007B226D657373616765223A22736E617073686F745F66616365222C2264617461223A7B22706572736F6E4964223A22333430313131313939373035333035343331222C22666163654964223A22333430313131313939373035333035343331222C2266756C6C6E616D65223A22E982B1E58D9AE6B48B222C2274797065223A312C22736E6170506963223A222F396A2F3277424441427353464263554552735846686365484273674B4549724B43556C4B464536505442435946566C5A46395658567471654A6D42616E475163317464686257476B4A366A713632725A3443387962716D78356D6F7136542F32774244415277654869676A4B4534724B30366B626C3175704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B536B704B542F7741415243415134417941444153494141684542417845422F38514148774141415155424151454241514541414141414141414141414543417751464267634943516F4C2F3851417452414141674544417749454177554642415141414146394151494441415152425249684D5545474531466842794A7846444B426B61454949304B78775256533066416B4D324A7967676B4B4668635947526F6C4A69636F4B536F304E5459334F446B3651305246526B644953557054564656575631685A576D4E6B5A575A6E61476C7163335231646E643465587144684957476834694A69704B546C4A57576C35695A6D714B6A704B576D7036697071724B7A744C57327437693575734C44784D584778386A4A79744C54314E585731396A5A32754869342B546C3575666F3665727838765030396662332B506E362F38514148774541417745424151454241514542415141414141414141414543417751464267634943516F4C2F385141745245414167454342415144424163464241514141514A3341414543417845454253457842684A425551646863524D694D6F454946454B526F62484243534D7A55764156596E4C524368596B4E4F456C3852635947526F6D4A7967704B6A55324E7A67354F6B4E4552555A4853456C4B55315256566C64595756706A5A47566D5A326870616E4E3064585A3365486C36676F4F456859614869496D4B6B704F556C5A61586D4A6D616F714F6B7061616E714B6D7173724F3074626133754C6D367773504578636248794D6E4B3074505531646258324E6E613475506B3565626E364F6E7138765030396662332B506E362F396F4144414D4241414952417845415077445333742F655035306D397637782F4F6B6F706B6937322F764838364E3766336A2B644A52514175397637782F4F6A653339342F6E54614B414862322F764838364E3766336A2B644E6F6F4158653339342F6E5276622B38667A704B53674232397637782F4F6A653339342F6E54614B414633742F6550353062322F7648383653696759753976377A666E5276622B383335303267394B414465352F6962383658653250764E2B644E48536730414F33742F656238364E3766336D2F4F6D3055414F33742F656238365465333935767A704B5465414354304641446A4977507A4F515072555A75434F41352B75616F79334739324F6542566157345047326743336458377164717353543647716B6C7A4A314D6A5A2F336A55426235736D6D746738304153476432504C4E2B64494A572F764E2B6452305A6F47532B593339342F6E545449772F69503530776D6D3041532B593339342F6E52356A2F336A2B6452696A4F4B414846332F414C782F4F6B33502F6562383654497063304147582F764838364E7A66336D2F4F67734150656D622F6167422B352F377A666E5148622B2B333530676B7043326141482B592F384165503530766D4E2F66623836697A535A6F416B4D6A6633322F4F6A7A472F764E2B64525A7063304153695676377A666E52356A6633322F4F6F73305541532B593339342F6E5337322F76483836687043543630415437332F414C7A666E54576B622B3833353145474937305A4A6F416B38787637782F4F67534E2F6550353146526D6743626554334A2F476A4A50384145522B4E513570633041504F372B2B667A704E7A66336A2B644A757061414633742F6550353075397637782F4F6D6E7054633041504C4E2F665035306D39682F45667A707561544E4145676B662B38667A70776C662B38333531446D6E4271414A684B782F69503530766D4E2F65623836677A536871414A6A49333939767A717A61334C5A777A746E3631537A536A726B6461414E67537377345A767A6F38782F77432B3335315374352B676272566F454D4D394B41482B592F384166623836587A482F414C7A666E544156504734557653674232392F377A666E5276663841764E2B644E6F6F416476662B3833353062332F764E2B644E6F6F416476663841764E2B6447392F377A666E54614B414633763841336D2F4F6A652F3935767A704B4B414633763841336D2F4F6A7A482F414C7A666E54614B414865592F774465623836504D663841764E2B644E6F6F4164356A2F414E35767A6F38782F77433833353032696742336D503841336D2F4F6A652F3935767A707446414337332F764E2B6447392F377A666E53556C4144764D663841764E2B6447392F377A666E54614B4244764D662B3833353065592F3935767A7074464144764D662B3833353065592F3935767A707446417832392F3737666E5276663841764E2B644E6F6F4158652F3939767A7064372F336D2F4F6D3055414C356A2F336D2F4F6A7A482F764E2B644A5355414F33763841336D2F4F6A7A482F414C7A666E54614B42477052525251494B4B4B5367416F6F6F6F414B4B4B4B41436B70615367416F6F6F6F414B4B4B4B4268534E5253486B30414C5347696967424B4B583631433836784D546D6743666841533361737937756754734234714F653664736B48725651386E4A3630774A47634867644B59514B544E4B4F615144537447333370314641786D305568474B656159654B414730555555414A6D6B70615130414761435453554145394251415555757730754D55414E6F70324B63465767434F697053692B6C4D4B45644B41454744317032326B326D6E4367434E67516561544E536E6E7254434251416D614B434B536741704B5846474B41456F706355596F4153696C785355414C526D6B6F6F41646D6A464E70516141467853455575614F74414461576C704B41466F6F70525141744B44696B7A5251412F71654B6B382B515237522B64515A7854783877346F414138693868732F57725676645A624431574B306D42336F456134777779706F724E686D644777547856354A4659444857674353696B6F6F474C525252514155555555414A5252525141555555554146464646414252525251416C464C535541464646464142525252514155555555414646464641676F6F6F6F414B536C704B42685252525149314B4B4B4B424252525355414646464641425252525141556C464641425252525141556C4C535A6F4746496676557561522B4633656C41434530316D357854524A754E4D4D3649574C486B55414F75706C686979547A5751307A534D5750536C75626870334F54387670554F61594479314D4A704361544E4959744C6D6D35704E314144393147616A335542714148357072476C7A6D6B4E4144614D3070464A746F414B656F464E32385A6F427851412F4367394B544148536B33555A6F414B513034594E497778394B414730426A52514451413447696B7A535A6F41576C7041633074414367436E464649794B6A7A5147393641416F525463552F4E49614147306C4F70434B414570616252514174474B53675541474B54464F6F6F41625253306C41425335704B4B41467A52535555414F6F704D305A6F41576A4E4A536730414C536734704D305A6F4166754E4F556A507A644B6A4270615146724B624F4B534E747036314147497064314D44516A663171544F616F77766B386D72694D4D5937657441447330744A51446D6742614B4B4B414369696967416F6F6F6F414B4B4B4B414369696967424B4B576B6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B424252525251415555556C41776F6F6F6F41314B4B4B4B4351704B576B6F474646464641676F6F6F6F474A52525251494B4B4B5470394B4143696B4A3541705239376D6759316D436A314E565A376B743876616B75706747777035716D386756536338304153745074424A626F4B70504958596B6E72545363386D6B4A6F414B51305A70704F6142696B306D614B513041424E4A51426D6E6261414730744C696A6251416D61586452747070426F416347464C7836307A464641443654464A6D6C426F415138556D6165647070465148725141674E534137754D556D7743674D466F41504C4236486D6D2B57633470336D483070424966536742664B507253464D55752F3270704A4E4143644B4D3068704B4148476B704D305A6F414D305A704B4B41466F704B5767424B536E556C41435575614D556D4B41467A526D6B6F6F41576B6F6F6F414B4B4B4B414369696967416F6F6F6F414B57696967416F6F706141436C42704B4B4148696C7A544D306F4E49427736354857706F37686C3478554970615946355A397741715A54675655745755486D724947383863436742344F6157676A46464142525252514155555555414646464641425252525141556C4C535541464646464142525252514155555555434369696967416F6F6F6F414B4B4B536742615369696744556F6F6F6F45464A53306C41776F6F6F6F414B4B4B4B41456F6F6F6F414B414D6D696B4A77704F61414938344A3942535379716B4A4F656355775074445A4E5562743979454870326F416A4D696A63354F5456556E4A7961552F64785454514145306D6151305544436967436C496F4162535574474B41464278526D6B704B41464C554130556355414C6D6C704F4B5767417853344870535A4872526D67414B67394B54797A324E4C6D6A4E4143424453454661666D6B59354641444E354649574A6F4E4A514175614D306C46414473305A7074464143356F704B4B414369696967416F6F6F6F414B576B6F6F41576B704B4B41466F704B4D30414C5355555A6F414B4B4D307449424B4B4B4B414369696C6F4153696C6F6F414253306C46414330556C4C514155555555414C525252514D41616B42474B6A70525141384842794B73706331556F427761596A536A6B592B3953377565616F78545949717835364870316F416D7A5335706F4765615846414330556C476141466F6F7A5355414C52535555414C5355744A5141555555554146464646414252525251415555555543436969696741704B576B6F414B4B4B4B414E536969696741704B576B6F414B4B4B4B41436B7061536741484E436A4F6355795A696B524B39635653535239752F6552514262754A64683231475A4379456763437163736D5153546B31463537424D5A774B414A476B337679654B7233625A6456485163304352514F764E56324A5A6954514135735970744A6D6B7A514D4B42526D6967426330556C4A6D674261544E4954535A6F416453476D306F6F41584E4A6D6C7852746F4153696E67415563596F415A526D6C496F7851415A7063306D4B4D55414C6D6B4A70434B4B41444E464A525141744A525330414A5355366B7041464A533055414A5330555541464646464142525252514155555555414A525330596F41536B703146414461576C704B4268525253304146464646414252525251415555555541464646464142526D696967425161576D5534476742614253555A6F41645330677061414145697059506D626D6F735576494F525142645863726A4234716362716F7063455942347856324B565841414E4D5136696C785251416D4B576C6F6F4153696C6F6F414B536C704B414369696967416F6F6F6F414B4B4B4B414369696967416F6F6F6F45464A53306C414252525251427155555555414A525252514155684F4B576D455A61674263305A704351447A54576B413655414C6366366B2F53737A7A46614443396A562B53554F6854465938674D544D754D5A4F61414773784A3971526A6B597063674966576F79614144696D736143324B5A514D584E464A525141557561536967417A535A6F6F6F41536A464B425330414A696C6F704B41467A526D6A46474B41444E4646464142535A6F7A5355414C6D6A4E4A52514175615369696B4155555555414646464641776F6F6F6F414B4B4B4B414369696967416F6F6F7851415555754B4D55414A5253346F7851416C464C526967424B4B5846474B41456F706355596F4153696C78526967424B4B5846474B41436969696741704B576B6F414B4B4B584641435555754B513041464646476141466F704D305A6F41555534557A4E4B47785142494B5530774D4B634F5251415539474B6371615A5251426368754333424E57527A30724C5534504658726663527961596978525232704B4146704B4B5767424B4B576B6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B41436969696741704B576967516C464C52514270306C4C535541464646464143476B50555576656B62706D67424D675067304D7139735A707378414B6E76554530766C633535505155414A6346592F75747A575A63792B5934374556507544506C736C6A3271746338734743346F416A4A3470704E424E4E7A514D445355476B7A514174464A6D6967416F6F6F6F414B4B4B4B41466F6F70614145706153696741704D30476967417A5355754B4B514355555555414646464641776F6F6F7851415555754B5846414461576C7853376141734E7852696E5970635544734E7852696E596F7851413346474B64696C785146686D4B4D552F625337615157493855754B6545464B456F754F7848696A62556F55436C7852634C4557326A465346614E7446777352346F78556D796C3230584378467470646F71586254676C4B34374547796A46574E6E4649597833464678574B2B4B544657476A48616D2B58327033437844696A4653474D30307152326F437733464A696E346F78514B777A464C696E596F78514668754B5446535970434B41735247696E6C6161525441625253346F6F454A525252514134556F4F4B626D6C464145674E464E4270614141314C46634750726D6F6A5355415834726F79484853724B355963316A676C546B4772554D726B354A7A54455838556C4D52793355302B67416F6F6F6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B42476E5355744A514155555555414278544A5A4656646F4F5454396F494F65315A307833796B4A5141365758614D6A6B31535A6D6E594679654B6D6E63526F552F694E552F4F5A4D7251424938776962436A4A71764A4930687961516E4A4A4E4953414B426A63306C4C6D6B7A514168704B55306C4142525253346F4153696C7853346F41536C4170614B41436B70324B4D55686A6355754B64696A46415747346F78547355596F415A696A465362614E744145654B54465362614E74467832493855754B66747064744B345749774B554370516C4C7446467832497355754B6B325575796C634C45654B4D564A747077584E46777351375454747453684B58627A774B4C6A7352624B4E6871586161586253754244734E4B45785532326A623755584168322B3147327074686F323044497365314C744E532F536A426F4169326D6C43314D466F3230415268523655625236564B467064754F3141454F305562525575326A6251424746464B4254397447326B41334642577041744F4170675162545453707179564649556F417237534B5448474B6E4B55307051424159786A705149783071626252746F41684D51394B59557761736861436D526B3058455664744730347A5578583070754B64777351347047577047474B544761596945306871517253626142574936536E6C63556D4B5968744C5269696742774E4F706770776F4164317044525347674236714E7561656832743756426B307554363041614551427953315471637257576B6A4C7744785632456C674D476D49735A6F6F55454470525141555555554146464646414252525251415555555541464646464142525252514155555555434E4F6B7061516967416F484E4A534F3278654B414962796368664C5373393532684241475436314D3561535134357172634542546E726D67434545752B3439616A6D4731732B744F5669446B56484D32352F70514D626D6B4A6F704B414369696967416F6F70514B4145464C696C785253414B4D55754B554367596D4B58464F7853346F43773346474B6669674C53474E7853347034576A464678324762615862543855754B56777352376158625567464B467A5142467470646E4653684B5862514D683265314B457158464C696C6343505A7A53374B6B4330754B4149396E4E4732704D55596F415946487053376531507853346F47523761586278556D326A46414559474B58384B667470635567475559702B326C41397159456532677255754B544649434C62696C43314A696C78514D594253675534436E4261414762614E7450323062614147596F32302F62536755415237615862543855596F415A696C4170324B64696742753267436E41557532674268576D464B6D32306261414B35536D374B736C4B61566F41723761584653466154623755774969744D4B31594B30786C70434B374C6B5648747130567A5552586D6D42437770754B7346654B6A4B303767526B416A6D6D62616C4B476D34706B74455A464E4971557254534B597245644F55383045594E4A6967524952785444543838436D734D4767424B634278544B584E41456972754F4B7351527972305046564135423471336253794F654B596D584556683934307452716B68413347704D59346F414B4B4B4B414369696967416F6F6F6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B414E4F6D4F5346794B64526E427765686F4552713449353630795864744A50536E534A33576D2B59646D78753941476573776A6B4A4E56726B68354E3261733355586C766B3944564B6359594548696D4168594B4D6731457A626A6D696B7044436B6F6F6F414B57696C416F414D556F464F41706355686A63555970324B4D55414942546853436E68615178414B63467077464B4253474946705175616542546C474B414977687077546D704D55754451424874375575797041744F32304152434F674A553455436A464145495130625455314A6A69675A46696C78543974474B51444D5559702B4B4D55444759706355754B5846414463556F464C5330414646464C53474A696A464C53346F4154464C696A464C6967424D5559703146414463556F464C536967596D4B58464C5330414A696A464C696A4649596D4B4D55754B58464144616342525330414A696A464F6F7854454E7852547355596F416253347077464F7851417A6254536C533761434B414B3558464E785535576D4661414938554663696E6C6154464145444A6730783137315A5A633147566F45514B4D303130787A5568474454735A576D497241554D67493436314979594E4733497A5142564949704D63564F36307770696D49674970707156314E526B557952564F4B584E4E704D3077426836556C4C6D6B6F45474F4B75573071716E6F6170306F4A426F41306B6C7A794B6C56693361715545764F4B7552746759505367512B6969696D4155555555414646464641425252525141555555554146464646414252525251427055795267654B6356794F4456576263704F4F6142436955636A504970736B676341644456475752742B377053744D727143446730415354686D58616563566E4F506D495055565A2B30595935624E56356E566E33436743493855326E737749707441784B584641464F7851416C4C52696A464959345538444A7069314B42696B4D544647326E556F464942414B6342536755344C514D514C54776F70514B6342514167464C53306F4641784B55556F464F78514167464B42525330414B4253306770614145785152533055674734704D552B6B78514D62696A464F78526967593346474B64696A464942754B4D553746474B414734706355754B4D55414A5330597061414369696C6F474A533055554146464C696A4641414B5555556F7044436C6F6F6F414B4B4B4B41436C6F6F6F414B57696C785141556F464B42533041494254674B55644B576742754B544270394641455A70684654465165616A49785142475252696E45556D4B41476B5577697063556846416974496E4761616E4277616E49714A6C494E4D513131794B616F37564C31464E785441696B54765464755671636A497067484E416971564F654B6A6B553536565A6359633470727275576D497145597070715A6C39616A5A6355795268704B63656C4E706946464C546163754E777A306F416D525141446E6D72555A34363155774F756174516857425955434C512B364B4B624553516330366D415555555541464646464142525252514155555555414646464641425252525142656B7946797456704A4E702B624E53544A4C3154705663787A4D43547A5149696B6938314379745642314B7477616C6435496D4B6E4942714A33376A7251424765764E4E705353546B306C41776F46464B4B414641707746494B634B51777852696E436C7853474E417036696A464F416F414646534261525670347044464170514B55436C7853474942547355597061414144464C5252544157696B706141466F704B57674261576D35705161514330556C4C514D4B4B4B5767416F6F6F70444369696C6F415446464C526967424D555970324B4D554447346F706355596F4153696C7852696B41596F4170614B4143696C6F6F41536C6F70614268525252514174464A533041464B42535535657441414254714B4B4146464C696C416F6F414B4B576730414146464944696E554149656C4E49794B66544B4149794B434B657770706F41625252525141796D7944497151696B49346F455141596F497037446D6B78544162696D4D764E53455568464169423137307A4872566B6A4971496A6D6D4971756C524D76577268516471674B386B553053797454534B6D644D48493656452F5771454E7077475253556C41682B3270495A6E6A4F414D696F6C624654774C754A507051425953346671453471796A62317A6A42706B517942556E745445464646464142525252514155555555414646464641425252525141555555554157576E4D62625750465153334155355673553664437850465A3879506E70306F454F755738376B64617073434F744F33534476696D456B39614269476B6F6F6F41555534436B4170314959415534554C317034464143415534436A464B42556A46566330344368527854774B42674F61636F6F417077464177464F78514B576B41555555554146464646414253306C46414330556D61544E4144714161536967592F4E4761625330414F6F704D305A6F416452535555444855556C4C53414B576B7061426853306C464142525252514155555A6F70414646464A5141744C53436C6F4157696B70614268525252514155744A5330414C53696D3034436742777061626D6E41356F4163445253556F6F415555744A533041474B57696967424454547A546A53554447476B78536D6B6F4154464A5471544641684D556C4F70445141786C7A54434D564C54574641444D5568464F6F7854455234785562446D707359714E7867304349794B686B586E4E576356473635464D525566304E51536665713036343631576C4865714A49364B4B4B5A49564A43355534714F6E786A4C69674451687A6A494E543952566549442B4538314F426755784330555555414646464641425252525141555555554146464646414252525251424B354F376E72554530754153414D565A75414F37444E554A6C4730354E416975564C38357855444444455A7A556B6A3447305644514D4B55556C4F576B416F70774649427A54776D656C4177555A4E5070516F483170514B51784B6374474B634253474F41464F4170464650416F41414B576C6F6F474646464C53414B4B4B4B414369696967416F6F70436141436B6F6F6F474C53306C4C514155744A525141744C5461576742314C5463306F4E414471576D3075615178314B4B625468514D4B4B57696B4130306D6163526D6D6C6159435574474B4B4143696B70525341576969696742614B536A4E417861576D35706330414C533030476E436742514B645355744142514B576743674261634B54464F4641436755596F464C5141556D6144525141684E496155306C41787046474B576967424B536C6F7851496269696C704D55414A535537464A69674268464A556D4B5952514168464D64616651526B5543494344696B49794B6B48705447474456434B37706B63394B72737656543071334975616764667A706B737073705669707074537A4C68733148544A4570364C6B3864525461566367385578463242733844714B74383435716C624979395256786675696D495769696967416F6F6F6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B41467530322F784147737156324A493363566575555A7547796170544A73497854455230326C4E4A534746534C6A464D4650417044486A464F4874534B4D38314946787A53474B6F3435705253346F78534155444E4F417046484E4F416F474171536B417061426852533055674369696967416F6F6F6F414B536C704B42685355744641425253305541464A53306C414253306C4C51415555596F7851416F706153696742314B4454615767593455366D696C704448436C706F4E4F6F414B4B4B4B5178434B54464F704B4243596F417031464D424B536E556870414A5355744A54414B4B4B5555414171536D436E556869696E696D556F4E41447155556C4C51416F4E4C53556F6F415555744A5330414C53555555414A5355744A514D4B536C704B414369696967424B4B576B6F4153696C6F6F454E7070465070434B4149794B4B636161614149794D476B595A7037436D6B5578454C56444B7454734B5977794B5A4C4B4D6F2F4B6F4B74794B526B5656497763477149596C4B50556471536C5537547A3070694C64724D5363477275414F6E537163616F77444951443371327564764E4D5174464646414252525251415555555541464646464142525252514155555555414F6E6C526D326F7561705854526F6E6264524F726A47473231554935354F614244614B4B4B42696755386330305535655453475370774D5A71536D526A317039495935526D6E5970464742547151774177616542336F41794D30344367424B57696967596C4646464942614B4B4B4143696C704B414369696967424B4B576967416F6F706355414A52696C6F78514D54464C696C6F7851416C474B64696967424D5555744641784B55555555414B4B576B464C53474B445467615A533041506F706F4E4C6D6742614B5369674261544E4761544E4143306C47614D304149614B4452514155436969674261634B625468514D64514B536C46494277705253436C4641433034644B626D6E4C5141744C52525141555555554445704454714B4147306C4B614B414570614B4B41436A4646464144614B55306C41684B5130366B496F416161616165616161414730776A3071536D47675247616959564D526D6F33475456496C6C57515A626D716A2F664E585A4F632B74564A56414E5569575230555555795361326A624F344567566F5273636257716A614F51324D5666424445476D495769696967416F6F6F6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B414B31776A4E394B707667484172516E49353534465A373433484641445453555555674646537841636D6F6854304F4B426B36314A696F56424A7163556869696E41556770796A6D6B4D556355366B464F6F47464A53305567456F6F6F6F414B57696967416F6F6F6F4746464646414252525251494B4B4B4B4269696969696742614B4B4B4143696C6F6F4153696969675955557446494170614B4B42685330555541464C525251415555555541464A5253554146464A6D6A4E41433055555541464C53556F6F415555345530556F6F41634B576D696C6F474F464B4B61445467615143303554546330346461594436576B6F70414C52525330414A69696C704B4144464A696C6F6F416269696C6F6F4162525334704B426955557446414461536C49704B4243476B4970314E50576742707044547355303041526D6F32715675764E52754B5A4C494A426B56536D465858716E4F506D4E55694347696C6F716843784F5561744F4677794164367A597838774A725169554D6F78544A5A4C52525251415555555541464646464142525252514155555555414646464641464B64386A67646172564B3673636B6A696F6A5141326969696B416F71614A52314E5270393670316F474F465344675577444A347034474B6B593863306F347046707736304448436C70427853306868525252514155555555414646464641776F6F6F6F414B4B4B4B414369696967416F70614B414570614B5767424B57696967416F6F6F6F474C52535555674855556D61634B42685269696C6F414D55744646414253305555414A5355366B496F416161536E476B785141326967305541464C53556F6F414B4B576967425253306C4C5141744761536C6F474C536A6D6D3034436742347077363030553455414F7061536967426155556736307441433055555541464A533055414A5253306C49424B5130366D30414A5253306C41784B513074496141457044536D6B6F454A5454536D6B6F4159777A555A373149616133536D4A6C615156556D366E4E58587170634449716B5179745253306C55535352355963565A6842577138456D303449344E586F674F31424A494D6B6330555555774369696967416F6F6F6F414B4B4B4B414369696967416F6F6F6F417A355A4E3330465131506352675A433971676F41536755556F70414B4B6E5442576F5255363432385544484B6347704231714A654F616B484E4959385534553161654F615178776F6F4646495955555555414646464641776F6F706141456F70614B414369696C6F4153696C6F6F41536C704B4B41466F6F704B41466F704D306D61414855556D614D3044466F704B4B414670516162536730674867306F70677061426A785253413074414330744A533041464646464143455530696E303030414D4E4A54715130414A53696B7052514174464646414330556C4C5141744C5461576742616344544B55476743536E413077476E5541507A53307A4E4C6D67423947615944536730774830744E426F7A5141366B6F427A525141555A7044526D6B4170704B544E4761417542704B584E4A514D53696C707070414961536E55686F41616151307446414562436D385538306848464146655163357170634B617675506C71704E3371305A736F3059707A4C67353961544655534E712F62754E674656493970594B336572554D654431346F45797A52516661696D494B4B4B4B414369696967416F6F6F6F414B4B4B4B414369696967436C634B7945354E567A567136793074514F4142373041523055555970414B4F74574647427A554B41446B314B7554514D63447A556770696A46534B4B51787770363030436E696B4D576C704B576B4D53696C704B414369696C6F414B4B576967596C4C533055414A53305555414649614361615451417561544E4A6D6A4E4D42614B536A4E4942614B544E476141466F704B4B414670616253356F4157696B7A526D6759385574526730374E414471634B6A7A546761426B6C464D7A533570414F6F704D3074414251614B513041496162546A5355414E6F6F4E46414330744E7A53696742614B4B4B41466F7A535555414C6D6C42706D614D30774A41616347714864536836424575366C33564476356F4C304263734268696C794B72622F536B38326756793175487253376856587A61587A66656D4679787670664D71723574416C6F433561333570412F34314148393658646E6D67567977546D6B71454E3730655952514F354E6D6A64554F2B6C4C5A36557244755335487252696F51787036746D6C59647854525154535544436B70614B51444453476E476B6F416A49347856533555593471346172334335487656496C6D65314D70353634704D565A6D4E49354831712F42676743716B59426341394B7478526265563655456B33536969696D415555555541464646464142525252514155555555414646464641464B6468764F4B6861724D734A427933355642494172594644424564464B614B51446C584E546442696F686E4653703730444646534B4B5A556F354649593566536E3030436E5569677061536C70414646464641425330556F6F41536C6F6F6F47464A525345346F41584E4E4C59704361616159685332614D30326A4E4144733055334E476141485A6F7A5463306D614148356F7A544D305A6F4166525451614D30414F7A525463305A6F474F7A526D6D35706330414F7A5335706C4B445341666D6C4270744B44514D646D6C42706F4E4C6D675938476C706770774E4942614B544E464143556870615130414A535570704B42425330326C46414471576B6F70674C534530684E4E4A6F41584E49577044546330414F7A526B4C317068616D6B3078447A4961517455644641687865674E3630326D6C7654696D496C4C5533654D3471504250586D6C55596F4166757077616F38305A6F416D7961554E673144757064786F416E456870642F745541616E6868514249487A546731523859704161414A7433504E4737625552507653626A5348637471344E4B4344565948304E5033307246584A36536F784A7A7A547751656C4B773767314A536B3068704447734D696F5A686C5455394D6B2B366161457A4B64634D6162556B672B633077316F5A4D417534347137426B4C69716B654333765635526852515378614B4B4B594252525251415555555541464646464142525252514155555555414A657074357A57664B5354394B76366A494277423037316E6B356F4162546C484F61536E556748436E696F7855674641783631497674556143706C46497044683070525252556A466F6F6F6F414B576B706141436C6F6F6F474647615130684E4D51453470684E424E4D4C5A6F416354546330306D6D733141683261544E4D7A51577851424A6D6D6C366A4C35704E3141456D2B6C445646756F335541533776656A643731466D6A4E41457537336F336D6F74314C766F416B33383062716A33555A6F416C4270326168445649477A514D65445467616A70776F41666D6C7A54614B5178344E4C6D6F38303447675938476E5A71504E4F464144383055334E46414335704B4B5367414A704B4B4B41436C464A53696742314A52516141476D6D6D6E476D4767414A70744C525149536D6B552F46474B59686D4B4D552F46495251417A464A696E6B556D3030414E6F7032326A62514179696E37615170514962533578533750725235667651416D345534476C455834303779386442544151476C426F32476C43304146464646417861554D5254656155436B41384D443961565A4370706D4D55754D30444C4149595A464651726C5478556F4F616C6C43306A444F61576C70415A56774D5356436174336959624E565257694D324F68584C653957347752785653506838697271644D3079574C525252544546464646414252525251415555555541464646464142525252514248667075592B6C555478785772666F46545055316D4D4D6D675347306F6F7853696759745048536D43704548616B4D6C6A48484E534B4B61745341564A51557446464959557446464142525253304146424F4B536D6B3077444E4E59306A4E32464E4A396142417835706A4E696B4C55776D674263303074696B4A7A54545141706B50616D4530476B70674C6D6A4E4E6F6F41646D6A4E4E7061514473305A704D556F464143356F6F4170635541417052514254674B42674254674B425468534155556F704B57674231464A5254474C546761625144534166546761594B55554448356F704B4B4146704B4B4B41436969696759556F6F7852514174426F704451495130773038303030414E70614B4B414369696C6F454A52525251416C464C5251416D4B4D55754B5846414359706355344C53686141734E435A7077544E534159464B4B41734E43593755425236564A74396158792F65674C4566464A73423663564C355948656D6C53744D426768486330766C4B4B646B306E4E4942436737553078552F4E4761426A5248366D6B43594E53415A6F3230414A514F4B584646417865314C53436C70415637744E79644B7A633961324A426C61795A6C3279455655534A44345151546D7253674163564443517748465431526D464646464D416F6F6F6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B414A3731642F38416857584D5276774B31376B346A507657524A31796142456446464B4B517771614D5978554E5478484F4B544B524D6F715155315267302B6B554646464C53414B536C704B41436A4E49546755776D6D41356D714974536B31477836383043464A707250696B4E4E4B3077476B6E7653476E45556D4B51446151302F46474B41497A53564C74704E6778514248526970646C4158464157493855754B6B432B744C734641794D436E6261654670647441444E7441584E5078533470414E417077464C696A4641414253305555414C525252514D4B4B4B4B41436C464A53696742516163445452536967422B614B5369675974464A533041464C52533041464A54735568464959436969696D4168704B55306C41684B536C4E4A51415555556C414330556C46414330556C4B4B41464650464D464F6F41634F61555567703149593561656F47616A42703261414A73556F576D4B616B464D413235714E75754B6C706A414367434F676B3435706151386D6B4247657441424E5078515454465954474B4B4B554367416F6F6F7044436C704B576741786E69732B3954612B514B304B687530444C545734704C5171514467565055454A35774B73565A6B784B4B4B4B59676F6F6F6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B414C6B34486C343961794C6D4D6F636D74715242747965617A4C726B6E6967525370614D596F46496F584654776A4651565A68484E4A6A524F6F7853304155745355464646464143556A48413936576D6B5577473961616166696B505367524763397151725436513041526B45556C5070434B4147346F774B576967596D4B54464F6F6F4162696A4650785142514133464B46703446474B5144514B55436E4155754B426A6474474B66696A4641444E74474B66696B78514133464A5438556D4B4147305570464A5141555555554146464646414330556C464942777052545254685441645330305574417861576B706141467052534155754B5144714B4252514D53696C704B41476D6B4E4F70445149625355555577436B7A5345306D6141467A526D6D356F7A5341646D6C464E4270614148696C464D4270776F41657070774E4D42705161426B6F705254464E506F416B57704B6946534130414B4B61394B54555A4F545141744A535A6F7A514D445355744A5141436C704B4B424252525330414646464C514D5368686C534F394C514B4247656F3253465477616D4E4E7546784A754834306F4F346539614978595555744A54454646464641425252525141555555554146464646414252525251426F4F63672B315A6B2B51574A4661765163446D7146794372664E51497A44327A52547053476B4F4F6C4E7046436A4A497856714556575437315849427853593054436967557453554A5355744641445453554872535A7067424F4B59787A3270787044514179696C704B4145704B576967424B536C6F7851416C464C525141556F46464C5347464C696B70776F41414D5574464C514D4D55597061576B416D4B4D553746474B41475970434B6B785345554152347070484653455568464D434F6B7078464A5149536969696B4155555555414C53696D3074414468546854525369675934556F70425431464D42514B6342514254674B51784D5559702B4B4D5541526B5530314C696D4555414D4E4E4E504E4D4E4144545453615671616159674A70704E424E4D4A7043485A6F7A5463305A6F47507A53673030476C426F41654454676159445468514138476C464E464F4641795155366B48536E4155414F48536C427852696967426330306D6730303855414C6D6B7A53555544467061626D6A4E494231464A525441576C704B555541464C525253414B4B576B6F41697542387563564170424876567431334952564E526734394B754A6E4A4436536C704B6F7A436969696D41555555554146464646414252525251415555555541615137315476414E68376D72684752554E776F4977527A5149785858615237306771653651716561676F474F6A487A5665694846556F7676597139463071575568394A53306C53554649614B5130414E6F6F704B594254545330686F416252533055414E6F70615367416F6F6F6F414B4B4B4B41436C704B576B4D4B55556C4C51416F7077706F70776F474B4B634B614B634B51786155436B78546851416D4B4D553669674268464D4971553030696752455254434B6C59597068464D434F696C4E4A534546464A525141744C535555414F464F464D464F46414567474B6576536D4C5571696759355254774B52616C555569684174424761666967696743456A464D49794B6C5A615952696D4243654B593153734B6959554347476D476E745554557952474E4D4A705750464D7A53474C6D6A4E4A6D696742774E504761697A5467784641456F70344F4B68424E4F79615945774E4F4456457650656E596F416D563663487145437046416F734679555355725341436D4462536C52314E4158447A4267306D38476F3248464D357042636E7944525547346967534555447554356F7A55666D6730753864714148357031526871634453416653696D696E43675974464B4253346F4153696A4646414365315535506B6C50317135566535584A42716B7957726A6576536968453434702B326E636E6B49364B6555394B5A564A6B4E57436969696D494B4B4B4B414369696967416F6F6F6F413071517147504E4C514F74416A4F766F38736364716F41567133363447514F5457586A4278514E446F68383958304879565268487A31664833525573744253476C7044556A454E4E4E4F4E4E4E4143476D307561536D41556C46464143556C4C5251416C464646414252525251416C464C53554146464A6D6A4E4959366C706C4C6D6742394B4B5A6D6C427044486730374E4D7A536730444A416155476D436C7A51412F4E47615A6D6A4E414436536D3771584E41445746526B564B5454445445526D6D30386A4E4D4E41684B536C704B514330744E7031414254313630796E725142497454494B6858725536554649656F35715A616A555A71644233704444464E497154464952514D69616F324654476D6B55415632576F5746576D584651534442706B6C647539527455723145777069497A7A54547854794D416D6F4A487763436742784E476169445538484E46685848673034456356455478555A593057433563444475614E36315379665530456E314E4F77726C34534B4B6435366A7657626B2B7070526E314E4F77726D6A396F4648326B56514766576E78444C66536977584C7632696E43347A314E56746870437046495A6245774E4C764271696369674F7737305747587477704D72363155447365394B4354336F73467979614166536F6C446574534165744959395771525771454131496F49704157425431714F4F706742514D5543696C6F70444570445330686F41625555796A62557070726A6730784D6A6A5835633034344179615A464A6A4950536F4C75666E6168356F47697876583170726A49794B70497A42736B35713468334A5451704962525252566D4155555555774369696967416F6F6F6F4130714B4B4B4246612B4F6341656C5A546A446B5674544B416862715457504D75484A6F4768595076566638413452564B31487A5664714757677070705453556968707044536D6B6F454E4E4961576B4E4D424B536C704B41436B6F6F6F414B4B4B4B41436B4A6F7A53646141444E4A53346F504649424B4B51734B5464514D666D67557A64514451424A53696F38306F4E41456D6155476F7763306F4E495A4B4454733145443271526159426D6A4E4C696D767851415A6F7A5565346A72534676656B424E535578583938302B6D41326D4E55684652736142444B5369696B41744B4B51556F6F41634B634B594B654F74417956616D536F56715A4B426F6D5370303656585370304E5355507072557561516D675933464E4E4F4E4A544161526D6F4A46347164756C524E79615A4C4B6B6771456A6D72556771757778544A493541646878564567686A6E7257683278554D6B4F54514972553448464B3052464A744950536D49556E49714F6E30316C376967474A525355557843346F78525330414271786170334E517175343164694731614173504970724A533571564144317046574B686A4A50536C4673635A7856353431555A347A536452674367436A354A46436F51656C58664C3971504C487052634C45436A4861706C55476E624D55415970584859554B425334464B425334704442654B6D513145425431346F47535555674F52533067436B4E464641444453487054694B61525142566B5949474E5568795378366D7246364B7231514958754B755148356561715272754E5846586176664A6F57345365674E31704B576B717A4268525252544546464646414252525251427055554841366B5563486F5251495A4E2F7136796268534735725A4B6B6A465A643777634367597931484E577A566130465744554D3051556C4C53556869476D476E6E7054445149536D6D6E556C4D42744A536D6B704146464A525141556D61436161576F416453394B6A334530636D6742786630706C42774B51734B4143696D6C674F394A766F41666D6A4E523771555A7032433438476C7A78554C75564F42555A636E7652594C6C6B4F4D3961587A414F39564E7870704A39614C4263756959413076326764717A2B6655306F50765473484D6148326765744C3575617A312B384B7678494E677057433478354D64616A61555934703834414E565365614C4475544C5067347135432B35617A56425A68697238433756704D43596D6F6E702B616A656B413269696967425253696D303455414F464F464E464F5530444A5636314B74517255716E696B556964616C513141703546544A534B4A4D30686F70445141556C46464143455578685436513830784D7275745633577272436F4A46706B737145594E4A55724C5453744D6B6A59557A625570464E78514247597853655544556D4B4B414944623838553337505670635A357077416F7546696E35423961657476787A566E625337614C6973527045712F576E3038526B306F69506567593041553954774D5535596854316A416F754D61716B6E6D7041754B64774B44696C634C43556D4B576967596C414754696E376156563230414942536755754B4D5568674B576A464C696741464C5252514D4B4452535543457072644B636151394B414B64347555716B4F6C614632755549725048537147697A62726E6D70324F54545946776C4B65744E4763324A52525256475155555555774369696967416F6F6F6F416E4C453936595764655161544E4C6E4E526331734F573759634E55463174666B4872537376616F48794F4B615A4C524E6263564E554E743071616B786F4B536C704B51784454534B6361513043476B55303038303069674268704454694B6131414355306D687159314141577068616730684641434754464D4D70702B7730786B70674E4D6A476B3373657070646C4730307843673039526D6D597051635541534B754F7450706759486D6C7A5142484D4B6971773247484E514D4E72596F454A54545335704B594355744A54676850616742384335666D723449564B7251526B6339716E436C767055334859686B4263303057353634713245554431705452635A444843425533516355556C4959476D4872546A54545341625253306C4142546853556F6F41634B634B614B634B426B69314B76536F6C715652514D6570715A54554971564B52534A4B4B576A464959326969696759556C4C535543454E527375616C7854534B5A4C4B374A36314756713079314579303769735679744E4B314F567075326D49684B30335A36477069744E4B30434974707A514B6B785274464178674A7077616C325575796B416F656E427A5451744F4330414B484E4B474A4E41536E71744178426B3034436E42616342514167576E4155754B5767424D55597031474B4269596F785473555970414A5253346F78514D53696C6F6F41536B70314A51416C4E4E4F4E4E4E41694B63626C49724E412B66486F6130354F6C555758452F48513077526151595155303961654268523755773961704763784B4B4B4B737A4369696967416F6F6F6F414B4B4B4B41416D6A4E514A4C6A68716C7A36566D62447331464A6A4E4F7A54547A514A6B6C7655315177564E5445464A5330556745704B576B6F47496161525436625149616161525438556846414552576B4B314E746F496F4167326574425770615130774953744E4B5A7159303069674349705443754B73597070555541563855597162594B5479364C6752346F702F6C6D6C3873696934786C4979426837302F616653674B6653693445506B6E316F45487161736257394B585966536934724553514370566A413755384C78317077774F6C4B344342414B666D6D356F7A514D584E4646464142525253453041496162536D6B70414646464641414B634B5155345541417034706F70525447534C317159564374544A53474F464F5273476B70564754534B4C43394B576B576E55414D4935704B6361536B4D53696C6F6F41536B7031474B41474555776A4E5345556D4B5A4A455570685770794B615670675679744E4B314D5254537441694C46474B65566F7854454E41707746474B576B415970514B4B5767596F464F41785452547330414C5468545161634B426930744A525141345574494B5767416F6F705251416D4B58464C69696B4D62696730744A51416C4A536D6B6F414B5933576E553171424562633141366A494E57473656477779744D51667731485476346162566F7A6D46464646555146464646414252525251415555555541557574535253594F30394455576156507669737A6F5A5A4E4A546A317072557943533337314E554E756531545543436969696B416C4A5330554445704B645355414A696A464C5251416D4B513070704B41476B55776970445345554349794B61616B49707046414444535534696B7851413269696967597561584E4E6F70414F7A526D6D3055414F7A526D6B6F78514175614B4D55744D4170614B4B41466F6F6F6F414B5367306C4942445355744A51415543696C4641433074494B634B594142546853556F6F47534B616B576F56715A54534753436E4C317067703630444C45644F714E443071513068694555326E556D4B41456F4E4C5253474E70614D5555414A53597031464D517A464952543651696743506254534B6B70434B424552586D6D6C616D497070464D434C46474B6B7853596F4162696C7853346F6F414B4B4B576B415534476D3074414473306F4E4E70525141366C46494B576759744F464E7061414855596F51635570346F416253553430326742434B6161656162514D6161616165656C4D4E4249787568714B706D36476F31484E4D5130394B62546D36553272526E495369696971494369696967416F6F6F6F414B4B4B4B414B4A344F4B56503959744F6C587654492F77445772575A30644332314D4A71522B6C524E54494A626671616E7174623961733043436969696B41556C4C5355444369696967424B4B4B4B41436B6F6F6F414B51696C704B41476B556D4B66535541526B5530697063556D4B414974744A69704D55596F416A7852696E346F7851417A46474B66696A464144514B58464C696967424D5555744641425253346F6F41536969696742445355744A5341536B70614B4145707770425468514141557446464D4261555567706141484472556931474B6B5870514E45713149745272543171536956616C3756436E5770633044467044525161414730744A5253474C535555557743696C6F6F41544649525471536751796B7035464E7851416C495253306846414463555970324B5130414E49704B6454534B4243555574464D4170614B4B51414B634B6253696742314B4B6253304448675574414E4C514134644B4B544A706330414965744A536E72535541496162696C4A7044514D615454536164545746416D4D63656C4E54373150375647682B656D534E6B34706C535444445648566F796C75464646465553464646464142525252514155555555415179707459696F555839384B7658736532556D71304B356C427147624A3645723856455255736E576F7A514964427739575456574C2F575661505767515555555567456F6F6F6F47464A53306C41425253556D6141466F704D3055414C5253555544436B70614B4145704454714D55414D6F70324B4D55414E78535970324B4D554347346F7853346F6F4153696C6F6F416252533055414A52525251416C4A53306C41435555555567457061536C6F414B576B70615943306F704B5767426155556770776F415555385577553961426F6B5770425561303847704B4A523070344F6169576E67346F47506F7041614B51776F6F6F6F414B4B4B4B424330556C464143306C46464D424B536C4E4A514155686F6F6F415446474B57696742754B51696E5555414D49704B655253596F4153696C78526967516C464C696C416F41515534436A464B42514D4B6344535555414C6D6C704B5767414A7043614B5367424B536C704B41413077302B6D4E51496161692F3561666A556C4D555A6B70694854673752554E5433422B556657713958457A6E75464646465551464646464142525252514155555555415772354D78376831716A43506D72566464385A55316D71757952716C6C7859312B70714D30396A7A555A4E535550692B2F566D716B5A2B6572644D5155555555674369696967596C49545330686F41544E4A6D696B6F41576A4E4A52514D584E4C5461576742614B4B4B4146704B576967424B4B4B4B41436B78533055414A5355744A51416C464C535541464A53306C41425347696967516C4A525251416C464646414252525251417446464C51416F70615155366741464B4B536C46414468546C3630326E4C514E44313631497452725478534B4A46707770677152615178514B576C6F6F474A52525253414B536C7043615942526D6D356F7A5141374E4C6D6D356F7A5149445355744A6D67416F704D305A6F41576969696741704B576967424B4B4B4B414570635555744143596F7853305541474B4B576967416F6F6F6F4155476A4E4A52514175614B536A4E4143476B70615367424B61314F4E4E61675177394B616E33733034394B6A7A67385578437A6E4C415646543336557972526C4C634B4B4B4B6F6B4B4B4B4B414369696967416F6F6F6F4130314F44564B36545A495436316371473858636F5074535934376D6133656D45303975687149314271506A507A3163485156526A346572772B364B596D4646464A51494B4B4B536B4D4453476C70706F41513055556C41425252535A6F474F6F704D305A6F41646D6C70744C514136696B6F6F474C525355554146464646414253557446416874464C5355414A535570704B41457044536D6B4E41684B4B4B536741704B4B4B41466F704B4B41484367556770796A4E41446853306C4C5141744C5355744143306F704B555544486A6D6E696D41303855686B67715254555171566531496F6B786D67696E7030464246414556464F59594E4E6F474A53476C4E4E4E41434870546330366D6B55414B4453357074476141485A704D30306E464A6D67512F4E4A545161584E414477614B59445467614146706153696742614B4B4B4143696C6F6F41536C704B5767416F70614B41454E41474B57696741704B57696742445355744A51416C4A53305541496162536D6B6F454D50576F753953763171496735706942756C4D702F55556A4C697254496B6874464646555A68525252514155555555414646464641476A556431397A384B6B714F362F31644A67747A4E656F5431716478554236314273432F6646586C2B364B6F44377771394839796D4A693055555543436B6F704B514253476C7044514D536B6F704B41436B7061536742614B4B4B4148436C706F7061426930744E70776F4157696B6F6F474C52535555414646464649424B513074496159684453476C70445141326B705453554345704B576B6F414B4B53696B41556F704B5665744143696E714B51436E67557741436C785367555577436C6F6F70414C5252533044464650576D436E72534B4A42785431714F6E72534757592B616552554B4E7A6D724338696D4968596335706846547374524D4B51304D4E4E78547A54614269596F7853346F78514133626D6D4869707355316C794B41495363306C4F4977615965445149576A4E4A6D6A4E41446761646D6D5A70516141486730366D4130374E4143305A704D307441433074494B4B4146706153696742614B41614D30414A53306C46414330556C46414330686F70445141476D30366D6D67516C4A53306836557747503170464765744B314344765149526C77654B54475152363038303348504641325145594F4B4B644A772F7743464E7252474433436969696D494B4B4B4B4143696969674452706B2F4D5034302B676A636846444247597771753638357131497548494E4A7442465162465164525679492F4C555A6847654B6B6A2B586967544830686F6F6F45464A53306C4941707070615367596C4A536D6B6F4153696C704B41436C704B5767417061536C6F474C53696D307441433055555544466F704B4B4146704B4B4B42425347696B4E4143556C4B616161414130326C4E49614243476B7061536741704B4453476B4174506A48656F31475456684637557746417077464B42533041464A533055414A53306D61544E4144714B626D6C7A514D634B657039616A7A54676152524B445569394B6842715254514D6C55316169497856514770343277427A514A6B357833714A3037307536676E6967434972696B786D6E7467306C49597A6161586254383055414D78535534306C4179475164366959635A7177343471456A6E46416D52555570704B5968516164544B55476B413855374E4D4270776F474F70615155744141445471625369674261576B7052514155555555414646464641425252525141556870615367424B536C7044514951306836557449656C4D434E71564F3949314B686F454F4E4E7053314E4C59464D624970446C716252336F717A423768525252544546464646414252525251426F306F36306C46416972646F41325256664E584C726D7142424278696F5A7248596B4648656E4A4838764E4E3730444843696B6F6F45464646464143556C4C5355674130326C4E4A514D4B536C704B41436969696742614B536C7A514D576C707561576742614B4B4B41436C704B4B4143696B6F6F414B5130556C41425347676D6B6F41513068705453554345704B576B70414961516D6C4E4D4E417957495A71776F714B4963564D4F4B5968633045305A70704E417863306D61516D6D356F41646D6B7A535A704D30414F7A5337715A6D6C7A51424944546761694270344E495A4B4B654455616D6E4130444A6C617055624656314E53413041546236444A555761544E414570656A665557366A645347546276656A646D6F6431416648576743624E4A5441344E4C756F474B6552696F57484E5335714E6A7A514449794F61626970434B6177706B6A4B576969674277706159445467614148413034557A76547853474C53306C4C5141744C535555414C525252514155555574414253555555414270744C5251416C4961576B6F45464E616E5530394B4245625647484754556A644456664761704954646958654B59546D6B7852564A47626C634B4B4B4B6F6B4B4B4B4B414369696967416F6F6F6F41306142316F6F4A4155356F41686E504F4B684147633470574F3569614D347147617043453446524872546D624E4E4E49474C52514B4B59676F6F6F6F41536B7061536742445355744A5347464A53306C414252525251415555555541464C53555544467A53306C46414330556C47614146704B4B536742616253306C41435555476B4E494244535570704B42425355556C4143476B373074486567437848394B66556148696E3570674C53453045303030414649545253456764364143696B7950576C6F414B4B536C70444646505530796E4B615945716D6E67357149476E4130686B796D6E41347149476E6730444835704361626D676B44716141485A714E3567745158467749314A4A774B7A35626C3554686368614568584C7A336168736271636C78755042724B4369706F5352307074416A5657544E544B315559324E575932715369786D6F7A316F7A51764A6F41576B49702B4B4D5A6F4169497074534555306A6D6D496254685355744143696E413030633034554446464C53436C46494231464A533041464C5355744142525252514155555555414A52525269675168704B576B6F4144545361584E4E50536D495933512F536F42557A4867314456524D3542525252566B425252525141555555554146464646414252525251426F303262376C4F704A526D4B6867696E534D61516E6E4649616731454A6F6F6F7041417061536C70694369696967424B536C704B41454E46464649424B4B4B4B4269555555554146464646414252535555414C52535555414C6D696B6F6F474C525355554146464A6D69675155686F6F6F4151306C4C5355414A5253306C4143556C4C53476B424B6834702B616755344E535A706750704D306D616178346F41624A4A69716B6C77786235616C6D354656694F6161426A68634F4F74547833495065716D4B4D553743756153754770395A3063724965655256754F5947704754556F706F4F6155476B4D6B42705163564744546761426B6F4E50427145476E673041536271686E6C494271536D47506454417A4A5138723559354859556E6C6D7441776A4A3470504A397142464E592B616C564B73434955766C675544474A6B564F68706F5846505555686B674E53786A6A4E52714D314D6F2B576B4D4B4B576B6F4152687854434B6B70704641695046464F496F706741464F70425330414C53306C4C53474C52535574414253306C46414330744A533041464A52525141555A34704B445149625253306C4143476D6D6E476D304349704F462F476F716B6C50474B6A72534A6E4C634B4B4B4B6F674B4B4B4B414369696967416F6F6F6F414B4B4B4B414E476C486F65394A525149707A70735931446D7443534D53723731516C6A4B4E3071576A534C457A526D6D3771544E496F666D6E56466D7065776F45776F6F6F6F41536B7054535541464A53306C4941704B576B6F4153696C704B4269555574464143555555554146464646414355744A53304146464646414355555555414A5252525341536B70614B41456F6F6F70674649525330596F415A5467314952545361414A4D30564875496F335544477655544A6E7055784F52534555415679686F32314F52535970334659694330395152307077464F464942364D525567624E513035545347545A7051616A427036357A51413863314A54464650417961426A67636D6E397161425468794B59426A327063556F484E4B466F416A4B3033616331594134704E676F4752424F6561657130384B423070514B5143716F464F6F785330686853557446414355687061434B4147556D4B6453596F41536E415A704D556F6F415769696C6F414B4B4B4B414369696C6F414B4B53696742614B4B4B41436B4E4C534767516C4A53306C414348705463303430796D49686C504F4B5A54356558706C576A4B5734555555565249555555554146464646414252525251415555556C41476C52525251494B526C5751664D50787061536743764A5A5A2B36616761316B48514772394C7550725373567A4D7A6673306E6355344B56474456387354317143345876336F734F35586F6F6F7153684B536C4E4A5141556C4C535567456F70615367414E4A53307A4E417831464A5330414A5253306C41425252525141555555554146464646414355555555414A525330556745704B57696D416C46464C51416C464C5269674244544375616B7853596F4168595970745445553070514D6A70616474704E74414355597077464C6967426D4B576E596F785149536C41704D5539466F475056616B4178534B4B6451416F70366E6D6F36637070444A61654B594F54547851413561576B464C5141744C535555444670525463306F4E414471576D307449597446464641425355744A514145556C4C525141326C6F6F6F415767555555414C52525251416C4C535555414C52525251415555555543454E4A536D6B6F414B513074496141476D6D6D6E476D74304E4D5258593559306C42366E3630566F6A46685252525445464646464142525252514155555555414646464A5142705555555543436B70615367416F6F6F6F41536B6C47593830366B595A584641796B6570704B66494D476D56444C516C4A53306C4177704B576B7041464A53306C414254534B645355414A5253306C41776F6F6F6F414B4B4B4B414369696967424B4B4B4B414369696967416F6F6F6F414B536C6F6F4153696C6F6F414B4B4B4B41436B70614B414578535970314A514130696B78546A5355414A696A464C5330414E7852696E556F476151444E74537176464B46703457675967706158464A54414B5563556C46494356545438314144556974514D6C7A5467654B694270774E41782B61516D696B4E4143356F7A5461576752497563633074494478526D6B4D646D6A4E4E70633044467A535A6F7043635543467A53307A634454733041464646464178614B4B4B414369696967416F6F7061414369696967416F6F704B42425355744A51416C4961576B6F41513147353631493152536E3561614A5A4452525257686946464646414252525254414B4B4B4B4143696B6F6F41576B6F6F6F4130714B4B4B42425355555541464646464142514F74464A5142424F764A7143726B7935584E557A314E5379304A525252534B45704B576B7041464A53306C4142535574464143556C426F6F474646464641425252525141556C4C535541464646464142525252514155555555674369696B6F41576969696D415555555541464A526D6967416F6F6F6F414B53696C7851496252547355597044454653494B6142546C46413053714F4B576D357063304446707036307561616574414161544E426F43356F41423171564278545657705636554444464B42536A474B634D55686A614B66696B7851416C4B4253346F6F45464B4B4D55754B41457A5362756155696B7854415850464E59357061597835346F454C533534706D36676E306F416B44553445476F516330345A7A514D6C70616144536730686A714B536C6F414B4B4B4B414369696967416F6F704B424253476C704B4145704B576B4E41445771475538564D3156356676437169524A3644614B4B4B73794369696967416F6F6F7067464A5252514155744A5251415555555541615646464A51494B4B4B4B41436969696741704B4B4B414447636971636777315842776167754637394B544B524254616453564A596C4A536D6B70414A525252514155555555414A5252525141556C4C535544436969696741704B4B4B414369696967416F6F6F6F414B4B4B4B514355306D6C50536D5A6F416544533570674E4C6D674263305A704B4B41466F6F6F7069444E4C5341553443675941556F464B425330414A696A4649534254532F70514D6653627364366A4C45306D615179595054743156776165473936597958634B55484E513771637255674A4B6344544D35706330774A42536734714D476E6271426A3931415931486D6A4E4145776B3470776B71766D6A6361414C6551614B71695130385330724157425331437374534B2B615144715130744641687046524563314D656C52304347594E4E4E53314578357069465531494735363145764E4C6A4641795948696E4130784D6C61634B5178347061614B555544466F6F6F6F414B4B4B4B41436B706153675155686F704B41436D6D6E55316A7851413171727363735455306E43314256784D35425252525647595555555541464A53306C4D416F6F6F6F414B4B4B4B4143696969674453704B576B6F4546464646414252525251416C4646464142545A56334A6E3070314135346F475557474453564A4D7547794B6A7147576844535570704B42695555555567436969696741704B576B6F414B536C704B42685252535A6F41576B70615367416F6F6F6F414B4B4B4B5143555555554149656C5230396A7878544B59425335704B576751744646464942616342514B576D4155744A534D324B426A696355786E393661577A544361426A693261544E4A52514D584E47615369674263306F4E4A525141374E4B44544B634B414A5650464F42714D476E6A70514D646D6A4E4E6F6F41666D6A4E4E464F6F41584E4A52534530414C6D6B7A535A704D304153427165723471484E47614175576C6C39616B56776170422F576E712B4B5146736D6D45303158794B61586F45507A555A584A3630626853356F415652696C3630334E4B4451413848464F4271504E50576B4D654B645452546853474C5253557441425252525441536730556C4167704B4B513041464E624E4B616166616752464B654D5648524A4D715038314F2B305245446974455A73625255676B68595575324A2F75742B744D6D784652556867503841436330316F3358714B42444B4B4478316F706746464646414252525251415555555541614E46464641676F6F6F6F414B536C704B41436969696741704B4B4B41493768636A4E5661764D4E79455653646472564C4C51326B7061536B554A52525253414B4B536C6F414B4B4B5367416F6F6F6F4151306D4B64535544456F6F6F6F414B4B4B4B41436B7061536B4168704B576B4E4143476B6F7A5251494D555970614B42674B634B53696742314C546330786D70674F5A366A4A7A5345306C41783261536B706141466F704D305A6F41576969696742614B4B4B41436E4C53555544486970416531514238556F6B4F61426B394A54504D474B615A4F6159574A7155476F772F46472B6B4668354E4E4A707059303074373077735345306D616A335575614173507A5154544D307441683261554E7A556561516D6B42594430686B7A56637563594649484A6F4557424A5569766D716F4F545571747A5341734130345645707151484E417834417854774D55784F74504649592B6C46494B576759744646464143306C464641425355556C4167704B55303267424454484F314361656172586375794D38397161457A4B764A43307077635644356A2F414E366B59376D4A4E4A57694D6D504530716A414E50533664657451306C4D52666A3142676554567150554D39634836316A55446A6F615148516934696363696E6558452F7742317177466D64654D314B6C3679347A6D69774777626468304F61595933485556546A314476757131486667396347674C4239614B6D5734686B3669677771334D624367566947696E4E47366452546159476A52525251494B4B4B5367416F6F6F6F414B4B4B5367416F6F705143614145465133456542757878566B41436B6B546568397151305A314A546D4747497074536143553039616361536B4155555555414646464641425252525141556C4C52514D536969696741704B576967424B51307449615143476D6D6E45553030414E70614D5555414C5253554530414C6D6B7A5443314A753936594568616D453033646E76536268514D64525464314A754E4144364D3148754E4A54416B4C436D6C716252676D67593765616476706751306F6A4E4178322B6A6561504C507252355A3961516143377151756158797A532B563630786B655454677848656E434B6E434D55414E445556494976576E7248514F35476F4F4B65736247705651564B71346F416857483135703632343743706C4870557971635558455666493971504A46584E684E524F4D554259726D4C46486C653154476B6F437844355874545768486172464247614C6B324B6E6B413971517759713574464977464B34696F45497077577053744E4970414B707152616978556930444A5636553456474454776330686B674E4F714D553455414F706153696759744A525355434369696B4A6F41445345304530686F454E7A78575A71636D42742F4F744751674B61773771547A4A6D394F3156456C7368464A53306C575A6852525355414C52535555414C525355744142526B6A6F54525355434A466C644477654B6E6A7633553835785657696D4D325964544241445949713070686E48796E424E6333394B6C6A754A4979434452594471614B4B4B43524B4B4B4B4143696A725153712F654E41776F714A376C4636564762766E696B466930467A5473566E5066375279324B715461716634446B30444E73764776336D716A65617446434371484C656772456C755A3576764F5150616F776F48505530374161747663433479324D5A715773797A6C387554626E6731706B354752304E53796B4961536C704B51776F6F6F704146464646414252525251415555555541464A5252514D4B536C6F6F41536B70614B5144545355366B6F416252533055414E4E4E4A707A55773830415273324F6C526B6B314B557A5273464D43476C47616B32436C43307747685361634979657450417061426A4E6770646770394641444E6C4F43553455366759304C5477754B4254714146436A464C744870526D6C7A51416D33306F56525468536967434D714D394B554367386E4E46417863436C7075614D30444A5161646D6F67654B55476B4D6C55314F73696861716873476C4469674330306F413471426E33476D5A7A526D67423261626D676D6D356F4165764A702B6159744F70456935704361536B6F415139616152547355596F454E78536A7253346F785141345539616A4650427853416B4270633077476E4130444841307561626D6C7A5141744A525355414C5347696B6F454649614B61783630774B742F4C736A4F4B786335796657726D6F7937704E75656C553674476367704B576B706B685252525141555555554146464646414252525251415555555543436C704B4B414F75704B4B4B59676F417A53675A4E51334D327864712F69614268506372454D4C3172506C7543784A4A7143366E323579636D7162534F2F553855686C70377344337142726D52756E417147696D41484C484C456D6A67555555434369696B6F41584F43434F316164704D4A492B6179366C7470504C6C78324E4A6A5271306C414F3551614B6B734B4B4B536B4174464A52514174464646414252525251416C46464641776F6F6F6F414B5369696B416C4961576730414E70445330686F41616162546A5355414A696C7851425330414A696A464C525441625330744E6F474C6D696B6F70674F4270774E4D7A526D675A49445467616A427052534753356F714D476E4130415042785335706D614D307748556C4761544E4143306C4A6D6A4E4942326155476D5A6F7A514F354A6D6C7A5565366C335542636B4270633856486D6A4E41584835705254427A543651726A7155476D67303455414C5252525141555970614B4244614B576967417052535574494261654F6C4D7052514D6652535555414F704B4B53674261544E46464168436167754A4E6B5A5065706D4E5A756F53352B554771516D5A7A73586373615370436F4E4D4949717A496252525251415555555541464646464142525252514155556C4C51415555556C4168614B536C6F41363267444E4B426D6C596846393659444A58324C67566C336B2B77453571613975566A5535504E59306B6A544E754A34394B5178724D586263314A525254454646464A5141555555554146464646414252376A7252535541614E6E4D5858427836565A5042724A676679354D396A576F6A6230423731444C517446464649595555555541464646464143306C46464142525252514D4B4B536967416F6F6F70414A53476C704451416870707078704B4147346F70614D55414A533055744143556C4C535541464A53306C41435555744A544746464646417863306F4E4E7061414841306F4E4D7063304263666D6A64544D6D6B4A4E41456862417070656D55596F4164757064314E785367556843676D6C7A52744E4B466F486341616344514670775767424254674B554C54674B414252533470514D436C78514167464F46464C514D4B4B4B4B514252525251494B4B4B4B41436C704B5767417061536C6F41646D696B6F6F474F6F704B4B4146704B4B6178706947537674516D7361527A4A495737566576357471375257634F42566F695446704453306C4D676156394B59654B6B70434D30414D6F6F4978535541464646464142525252514155555555414646464641676F6F6F6F4137426D574E666D504E5A7435664B696B353537436F62322F4147306665394B79324C4F647A6E4A7032474C4A49307A626D4E4A52535543436B70615367416F6F6F6F414B4B4B53674261536C6F7851416C464C525341513164737076345431716C536F785267776F476A594E46527753423036302B704C466F6F704B5143306C4646414330556C4641786153696967416F6F704B514252525355414646464A5141556C4C5355414646464641425252525141556C4C52514132696E596F785141326A464C696A4641784D5559706355754B414734706355754B4B4147346F7854714D55414E7852696E59706355774759706355384C536861414741556F464F417077576B41674846474B64696A4641414B6342516F347031417741707746494F61654251416D4B4D55366A4649596C464C696B6F414B576969675155555574414355555555414A52525251416F7061536C6F414B576B706141466F704B4B41416D6F354843716163546A6D7156394C7454464E435A536E6B4D6B7039425564494B5774444E6852525251494B536C704B41436D4666536E306C41456446505A6534706C41425252525141555555554146464646414252525251496B354A79546B6D696B6F70674646464A514155555555414A525252514155744A54674B4141436C6F6F6F41513068705453476B416C4646464146697A6C3274744E6148555A72484277636A74576E62767651556D556957696969704B4369696967416F6F6F6F414B4B53696759744A525253414B5369696741704B4B4B414369696B6F414B4B4B4B414369696967416F6F6F6F414B57696967416F7852533044456F706355596F4153696C706355414E78536755754B58464143596F4170324B4D55414146474B63427853346F474E4170324B55436E426141476863306D4B6B78533761414742615846503230596F415252546852696C417044467852696C6F6F4154464A696E5555414D6F70324B544641435555754B5367416F6F6F6F4546474B5769674146464646414252535574414251614D306850464144574F416178377154664B5236566F33636F534938316A6A6B6B6E7161754A456D4F7A52535556524174464646414252525251415555555541464E5A63394B6452514246525432585031706C414252525251415555555543436969696742394A525254414B4B4B5367416F6F6F6F414B4B4B63425141415574464641425355744A51416C4A53306C49416F6F6F6F41577037523972594A3471436C5274724130445272476B70497A7569556D6C7143786153696967426153696967416F6F6F6F474646464A53414B4B4B4B41456F6F6F6F414B4B4B4B414369696967424B4B4B4B41436969696742614B4B4B414670615369675974464A53696742614B4B5767416F7853306F46414359706355754B554367596770774641464F4641414254674F4B51436E55444369696C704141464F3230436E346F474D78533470324B4D55414E7852696E596F78534162696A464F704B41476B555970314A514962696B703149615943556C4F704B41436969696751556870616154514174464A526D67417A545361556D6D4F634B5454457A4E76355337374F6F4656616449322B516D6D316F6A4E6853306C46416861576B6F6F415769696967416F6F6F6F414B4B4B4B594254574752783170314641455646534541314752696B494B4B4B4B426852525254454F6F6F6F6F414B53696967416F6F7077464143415536696C6F41536969696741704B576B6F4151306C4C53556743696969675955555547674454743233514432715371396932554B315055736F4B576B6F7044466F704B4B41466F6F6F7041464A5252514D4B536C704B414369696967416F6F6F6F414B4B4B4B4143696B6F6F414B4B576967416F6F6F6F414B4B4B576741705253556F6F474B4B576B464F464142546853556F6F474C53306C4C5141744B4B536C4641446854715A54676151786155436B7052514D6342546853436C464143696C6F6F704146464646414345556C4C534767424B536C6F6F41536B70614B4243556C4C53476D416C46495453453043464A70744761544E4143306C46464D51564849636F783971656161342F6376394B414D51395439614B4F35704B304D32464C535555434855556C4C514174464A53304146464646414252525254414B4B4B4B41436B497A785330554349694D48464653455A464D49496F41536969696742314A52525141555555716A4A6F41565254714B4B414369696967424B4B4B4B41456F6F6F6F41536B7061536B41555555554443696969674331703577784658445647784F4A71766E725573704355555555686852525251415555555568685355555541464646464142525252514155555555414646464641435555555541464C5355744142525252514174464646414253306C464144715555326747675A494B576D41307561414830744E4270774E4178614B536C6F41634B576D6730366742314649445330686A776164544161584E417834706161434B584E494261536A4E4A514155556C46414252525251495369696B6F414B6154536B3830786A54414361615451545355434369696C70694570614B526A51416E57687559326F464F78386A554159486476725253734D534D50656B72517A59555555554346706153696742614B4B4B41466F6F6F6F414B4B4B4B594252525251494B4B4B4B414369696967427051476D6C54556C4641456446464641436A6B30384441704658417061414369696967424B4B4B4B414369696967424B4B4B4B4145704B576B70414646464641776F6F6F6F416C74546959567074314E5A554A784B4B315736314C4B51326967306C495974464A5251415555555567436969696759556C4C5355414C52535555414C5253557441425252525141556C4646414253306C4641433055555541464C535555414C525252514155744A52514D576E436D306F6F41654453696D41303554514136696B70614268546C4F616253696743536C7A544161584E4178344E4C6D6F383034476B412F4E4F7A544B584E417832614D30334E49545141346D6A4E4D33557561424473306D61544E476141467A5345305A70704E4141546755776D676E4E4A544546464A53696751436C6F6F6F41447854635A4E424F615665394143306F3647696C4865675A677A4445376A33706C535851786450556461497965345555555543466F6F6F6F415769696967417061536C6F414B4B4B4B59676F6F6F6F414B4B4B4B414369696967416F6F6F6F416A703672334E4971353550536E3041464A525251415555556C414252525251416C46464641425252535541464A53306C49416F6F6F6F47464C53552B4F4E704734484872514E4B34363351732B657772544A7A7A566661493143697078393066536F624E484779454E496164545451534A525252514174464A533067436B70615367595555556C414252525251417447615369674261576D357061414369696967416F6F6F6F414B4B4B4B41466F704B4D30414C52526D696742614B5369674261576D306F4E4144685468544161584E41782B614D30334E4C6D67423470633030476C7A5141374E47616253356F474F464C6D6D41306F4E4145674E4C6D6F38305A70444A4D30786D704D306C41446761584E4E6F7A5149646D6A4E4D7A51545141386D6D45306D61536D49576C704B5767417052535555414C534D65614361625141564942675531527A543641436755556F6F47596C392F782B4E5546577454586263672B74566174475433436969696D494B55556C4C51417446464641425252525141555555744D515555555541464646464142525252514155555555414C37556C464641425252525141556C4C535541464A53306C414252525355414C5355555567436B70615367595555552B4F5065636E70514E4B346B61467A774F4B744267696855464A6A6A616F774B656F43665770624F694D6244547550584E576B4F59785663754B6E6A4F5978534655324855687061513047516C4A5330686F41536C7A535555686930556D61576741704B576B6F414B4B4B4B41436B70615367416F7A52535A6F416452535A6F7A514174464A6D6C7A5141555A704B4B41466F704D305A6F41584E414E4A525141374E464A6D6A4E4143307561626D6A4E414438305A706D61584E4144776155476F3830344767422B614D30334E47614148687155476F38306F4E41456D614D307A4E4761426A39314761626D6A4E414438305A706D614D304448377143314D7A526D6751374E4761626D6C416F4155557441464C5141557446464142535A6F4A704B41436C417A53436E69674256474B64514B4B51776F70615130415A57724C38364E564B744856682B36552B395A31614C597A6C75464646464D6B4B55556C4C514174464646414252525251415555555578433055555541464646464142525252514155555555414646464641425252525141556C4646414355555555414A52525251415555555567436B70614B4267426B314F6E3363436F6B366A465441425255733267685278514D74774B46473736552F63464742534E685447414B73522F367359716F5354566D44506C632B744245396839496157696778476D6B705453556745704B55306C417770616252514136696B706141436969696741704B576B6F414B536C704B41456F7A53306C414330556C46414330556D614B41466F704B4B41444E4C6D6B6F6F474C6D696B6F6F41576C7A546157675174464A6D6A4E4144733041306C476141485A7063307A4E47614148357051616A7A53356F47507A533571504E4C6D67512F4E47615944536967423261576D696E415544436C4641556D6E67596F4151436E41596F706141436C704B4D30414C53476A4E4A5141555555716A4E4143714B6653436E596F474170614B555567436D6D6E55303041553953584E7366617367644B327234627264367856365663544F5174464A5331524955555555414B4B576B464C51415555555541464646464D5174464A525141744646464142525252514155555555414646464641425355744A514155555555414A52525251416C464646414252525253414B4B4B4B426A6C34357156666D475430714A526B67564F546A6764716C6D38414A37553945376D6D41647A53354A3470476F386E4861706F446D4D2F577135423647707262376A6657676965784C525252515969476B4E4F4E4E4E49424453476C704B426A614B55306C4142526D6B6F6F41646D696B7A526D6742614B4B4B4143696B706141456F70615367424D555574474B41473055754B4D55414A5335704B4B4269306C4646414330556C4C51415555557441435555754B5846414355553746474B4147346F78543855596F41626967436E346F78514133464B425473553443675133464C696E41556F4641434155384C6967436C6F4746464646414330556C47614143696B7A52514174464A54674B4145417152527854514B654251416F464C51425330686852525330414A53476C707255415133497A457739717768332B7462732F3841717A57475268322B745845695155555556524155555555414B4B576B7061414369696967416F6F6F7069436969696742614B4B4B414369696967416F6F6F6F414B4B4B4B41456F6F6F6F414B4B4B4B41456F6F6F6F41536969696B415555555541464646464178793859715A656D5431714265534B6E4A71576277464A70366A614165394D487253354A393652714F5A73314C62386738393669326E484E53577778756F496E73545555557449794570445330686F454E6F4E4B6153675930306C4F4E4A51416C4A53306C4143557561536967426330756162526D674231464A6D6C6F4157696B6F6F414B4B4B4B41436969696741704D5574464143596F78533055444570614B5767424D55754B576C6F4154464C525251494B57696C6F41536C78514B576759596F70614B4242536969696759744F464E706330414C52535A6F7A514175614D306D615367426330555555414C536967436C416F4142536755553443674256464B4B4253696B4D55555555554146464C5251416C4961576B4E41454E783977316876393831743350434773522F766D72695249625252525645433074494B4B41466F6F6F6F4157696B7061414369696C7069457061536C6F414B4B4B4B414369696967416F6F6F6F414B4B4B4B41436B6F6F6F414B536C704B414369696967424B4B4B4B5143555555554443696969674279314D75534D6D6F56475342553539716C6D38417A543141417A3370677051535467556A55655478317030427935396854514D436C682B576246424D7469794B4B536C7047417449614B4B4269556C4C5355414961536C704451416C4961576B6F416252536D6B6F414B4B4B4B41436A4E464A5141374E47616253356F474F6F70744C514174464A6D696742614B53696742614B5369674261576B6F6F41576C70744C5149634B576D67305A6F416452535A6F7A5141366C7A5463305A6F41646D696B7A526D674231464A6D6A4E414473305A70744C514D584E464A54674B42425367554155344367596D4B55436C78525141415574464B4B4141436E556770777044464170614B4B41436C704B5767416F6F6F6F41536B4E4B61516D67437464483544574D33336A5774656E3554575565745769574E4E4A536D69714943696969675174464A533041464C5252514155744A53307842525252514155555555414646464641425252525141556C464641425252525141556C4C5355414646464641435555555567456F6F6F6F474646464641446C7156656554554B386D70756771576251467A546C3435706C4F4A70476F2F4E436E447154363067474D5A7047485130417934657446496A626C42706152674C52535555434369696967596C4A53306C4143556C4F704B4147306C4F704B41476D696C704B41436B70614B41456F6F6F6F4746464646414330556C4641433055555541464C535555414C6D6A4E4A5251417561584E4E6F6F41646D6A4E4A525141374E4761536967423261584E4E464F416F414D307441464B466F454A54685368616342514130436E415534436C785141304C54674B5846464178425330557441425252533041464B42514B55554441436E55436C7041464646464178614B4B4B414369696B6F4542706A55366D4F61414B4E38334272504E5737747331554E5769474961536C704B6F5443696969676B4B576B6F6F41576C704B5767416F6F706159684B57696967416F6F6F6F414B4B4B4B414369696967424B4B4B4B414369696967416F6F6F6F415369696967424B4B4B4B5143555555554443696969674279384770427A55517156656C537A61413770514F545161467047684A757A7A54536330447052514D6E6762636D33754B6B7147323674553149786C754C52525251534646464641784B4B4B4B41456F6F6F6F41536B70615367424B536C4E4A51416C464C5355414646464641425355744641435555555544466F6F6F6F414B4B4B4B41436A46464C514155596F706141457853346F464F464168414B6342514B55554141464F416F464B4B4146417A5367554C53304441436C416F464B4F6C41425330555541464646464143696C70425330414646464C514D4B55556C4F4649425253306C4C51415555556F6F414B4B4B4B4268546164546142434531464B63564931525330784D7A62726C71726D72467A392B6F4B744569476D303430686F42695555555579416F6F6F6F41576C704B576741706153696D495769696967416F6F6F6F414B4B4B4B41436969696741502F5A222C2273636F7265223A39352C22726573756C74223A312C22736E617074696D65223A22323032302D31302D31342031313A35353A3131227D7D";
        //log.info("获取16进制报文：{}", hexStr);
        MessageEntity entity = new MessageEntity();
        //消息标志 0-7  16进制报文→字符串
        entity.setMagic(HexUtils.hexStrToStr(hexStr.substring(0, 8)));
        //版本号 8-9  16进制报文→10进制数字→低字节数组→数字
        entity.setVersion(FormatTransferUtils.lBytesToInt(FormatTransferUtils.toLH(HexUtils.hexStrToInt(hexStr.substring(8, 10)))));
        //消息类型 10-11  16进制报文→10进制数字→低字节数组→数字
        entity.setMsgType(FormatTransferUtils.lBytesToInt(FormatTransferUtils.toLH(HexUtils.hexStrToInt(hexStr.substring(10, 12)))));
        //数据类型 12-13  16进制报文→10进制数字→低字节数组→数字
        entity.setDataType(FormatTransferUtils.lBytesToInt(FormatTransferUtils.toLH(HexUtils.hexStrToInt(hexStr.substring(12, 14)))));
        //保留字段 14-15  16进制报文→10进制数字→低字节数组→数字
        entity.setResv(FormatTransferUtils.lBytesToInt(FormatTransferUtils.toLH(HexUtils.hexStrToInt(hexStr.substring(14, 16)))));
        //时间戳 16-23  16进制报文→低字节数组→数字
        entity.setTimestamp(FormatTransferUtils.lBytesToInt(HexUtils.hexStrToBytes(hexStr.substring(16, 24))));
        //消息序号 24-31  16进制报文→低字节数组→数字
        entity.setSquence(FormatTransferUtils.lBytesToInt(HexUtils.hexStrToBytes(hexStr.substring(24, 32))));
        //数据长度 32-39  16进制报文→低字节数组→数字
        entity.setDataSize(FormatTransferUtils.lBytesToInt(HexUtils.hexStrToBytes(hexStr.substring(32, 40))));
        //可变字节 40- ?  16进制报文→字符串
        entity.setMsgBody(HexUtils.hexStrToStr(hexStr.substring(40)));
        log.info("entity：{}",entity);
    }*/
}
